Mostly Harmless

Legacy:Mod Authoring/Setting Up Your Project

From Unreal Wiki, The Unreal Engine Documentation Site
Jump to: navigation, search

Now its time to set up Unreal Tournament to build your project. First things first, you need to understand how UnrealScript uses packages.

Packages are collections of game resources. The resources can be anything, Textures, sounds, music, or compiled game code. The package format is the same for all resources and multiple resource types can be mixed in a package. For the sake of sanity, Unreal Tournament splits up packages into resources. The textures directory contains packages with textures, the sounds directory contains packages with sounds and so forth. Even though these packages have different suffixes (.utx, .uax, etc) they are still the same kind of file.

You are going to be dealing with .u files, or code packages. Code packages primarily contain compiled UnrealScript, but may also contain textures and sounds that the code depends on.

UnrealScript is an object oriented language. If you aren't familiar with OOP, now is a good time to take a detour and read my guide to object oriented programming. Here is the link: http://www.orangesmoothie.org/tuts/GM-OOtutorial.html. This document is fairly old, but still a good resource.

Since UnrealScript is object oriented, you won't be editing any of the original source. This is different from Quake, where you edit the original source and then distribute a new DLL. In UnrealScript, you will subclass the classes that shipped with Unreal Tournament, modifying them to suit your needs.

So lets make a package. I'm going to refer to our test package as MyPackage but you will want to call it the name of your mod. Where I say MyPackage you'll want to replace with your own package name. Make a directory in your Unreal Tournament directory called MyPackage. Underneath this directory, make a directory called Classes. The UnrealScript compiler looks in the Classes directory for source files to build.

Now, edit UnrealTournament.ini and search for EditPackages=. You'll see a list of all the Unreal Tournament packages. Add your package to the list:

 EditPackages=Core
 EditPackages=Engine
 EditPackages=Editor
 EditPackages=UWindow
 EditPackages=Fire
 EditPackages=IpDrv
 EditPackages=UWeb
 EditPackages=UBrowser
 EditPackages=UnrealShare
 EditPackages=UnrealI
 EditPackages=UMenu
 EditPackages=IpServer
 EditPackages=Botpack
 EditPackages=UTServerAdmin
 EditPackages=UTMenu
 EditPackages=UTBrowser
 EditPackages=MyPackage

Lets take a break and figure out what all those packages are for!

Core 
contains fundamental unrealscript classes. You won't need to look at the stuff in here much at all. Notice that Core, like many .u files, has a related DLL. The DLL contains the C++ part of the package.
Engine 
is where things get interesting. You'll soon become very familiar with the classes in engine. It contains the core definitions of many classes that will be central to your mod. GameInfo describes basic game rules. PlayerPawn describes basic player behavior. Actor describes the basic behavior of UnrealScript objects.
Editor 
contains classes relevant to the editor. You'll never need to mess with this, unless you become a totally elite hacker.
UWindow 
contains the basic classes relevant to the Unreal Tournament windowing system. This is a good place to research how the system works if you want to add complex windows and menus to your mod.
Fire 
contains the UnrealScript interface to the "Fire Engine." The fire engine is the code that makes all the cool water and fire effects in UT.
IpDrv 
contains classes for putting a UDP or TCP interface into your mod. We use this for the IRC interface in the game, among other things.
UWeb 
contains classes for remote web administration.
UBrowser 
contains the core classes for the in game server browser.
UnrealShare 
contains all the code from the shareware version of Unreal. Nalis galore!
UnrealI 
contains all the code from the full version of Unreal. UnrealShare and UnrealI are included in UT because some UT code is based on classes in these packages. There is a LOT of content here you could use for your mod.
UMenu 
contains any menus for UT that don't depend on Botpack.
IpServer 
contains the GameSpy querying interface.
Botpack 
is the soul of the new machine. It contains all of the game logic for Unreal Tournament. There are tons of kick ass toys to play with. This is where a lot of your research time will be spent.
UTServerAdmin 
contains Unreal Tournamnt specific web admin code.
UTMenu 
contains UT menus that require content from Botpack.
UTBrowser 
contains browser code that requires content from Botpack.

Notice that the order matters here. This is the order in which the compiler will load the packages. TournamentGameInfo in Botpack is a GameInfo (UT), so in order for the compiler to build that code, it needs to have Engine loaded. Your mod should go at the end of the list to benefit from all the code in the previous packages.


Prev Page: Legacy:Mod Authoring/A Few Things To Watch Out ForSection 5 of 12 – Next Page: Legacy:Mod Authoring/How To Build Your Package